Everything about The Software Architecture totally explained
The
software architecture of a program or computing system is the structure or structures of the
system, which comprise software components, the externaly visible properties of those components, and the relationships between them. The term also refers to documentation of a system's software architecture. Documenting software architecture facilitates communication between
stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.
Background
The field of
computer science has come across problems associated with complexity since its formation. Earlier problems of complexity were solved by developers by choosing the right data structures, developing algorithms, and by applying the concept of
separation of concerns. Although the term “software architecture” is relatively new to the industry, the fundamental principles of the field have been applied sporadically by software engineering pioneers since mid 1980s. Early attempts to capture and explain software architecture of a system were imprecise and disorganized - often characterized by a set of box-and-line diagrams. During the 1990’s there was a concentrated effort to define and codify fundamental aspects of the discipline. Initial sets of design patterns, styles, best practices, description languages, and formal logic were developed during that time.
The software architecture discipline is centered on the idea of reducing complexity through
abstraction and separation of concerns. To date there's still no agreement on the precise definition of the term “software architecture”.
As a maturing discipline with no clear rules on the right way to build a system, designing software architecture is still a mix of art and science. The “art” aspect of software architecture is because a commercial software system supports some aspect of a business or a mission. How a system supports key business drivers is described via scenarios as non-functional requirements of a system, also known as quality attributes, determine how a system will behave. Every system is unique due to the nature of the business drivers it supports, as such the degree of quality attributes exhibited by a system such as fault-tolerance, backward compatibility, extensibility, reliability, maintainability, availability, security, usability, and such other –ilities will vary with each implementation.. The study of the field increased in popularity since the early 1990s with research work concentrating on architectural styles (
patterns), architecture description languages, architecture documentation, and formal methods.
Research institutions have played a prominent role in furthering software architecture as a discipline. Mary Shaw and David Garlan of Carnegie Mellon wrote a book titled
Software Architecture: Perspectives on an Emerging Discipline in 1996, which brought forward the concepts in Software Architecture, such as
components, connectors, styles and so on. The
University of California, Irvine's Institute for Software Research's efforts in software architecture research is directed primarily in architectural styles, architecture description languages, and dynamic architectures.
ANSI/IEEE 1471-2000: Recommended Practice for Architecture Description of Software-Intensive Systems is the first formal standard in the area of software architecture, and was recently adopted by ISO as
ISO/IEC DIS 25961.
Describing architectures
Architecture description languages
Architecture description languages (ADLs) are used to describe a Software Architecture. Several different ADLs have been developed by different organizations, including
Wright (developed by Carnegie Mellon),
Acme (developed by Carnegie Mellon), xADL (developed by UCI),
Darwin (developed by
Imperial College London), DAOP-ADL (developed by University of Málaga). Common elements of an ADL are
component, connector and configuration.
Views
Software architecture is commonly organized in views, which are analogous to the different types of
blueprints made in building
architecture.
Within the ontology established by
ANSI/IEEE 1471-2000,
views are instances of
viewpoints, where a viewpoint exists to describe the architecture in question from the perspective of a given set of stakeholders and their concerns.
Some possible views (actually,
viewpoints in the 1471 ontology) are:
- Functional/logic view
- Code view
- Development/structural view
- Concurrency/process/thread view
- Physical/deployment view
- User action/feedback view
Several languages for describing software architectures have been devised, but no consensus has yet been reached on which symbol-set and view-system should be adopted. The
UML was established as a
standard "to model systems (and not just software)," and thus applies to views about software architecture. Others believe that effective development of software relies on understanding unique constraints of each problem, and so universal notations are doomed because each provides a
notational bias that necessarily makes the notation useless or dangerous for some set of tasks. They point to the proliferation of
programming languages and a succession of failed attempts to impose a single 'universal language' on programmers, as proof that software thrives on diversity and not on standards.
Architecture frameworks
4+1
Department of Defense Architecture Framework (DODAF)
UK Ministry of Defence Architectural Framework (MODAF)
The Open Group Architecture Framework (TOGAF)
Zachman framework
Federal Enterprise Architecture
Reference Model of Open Distributed Processing (RM-ODP)
Service-Oriented Modeling Framework (SOMF)
The distinction from detailed design
Software architecture, also described as strategic design, is an activity concerned with global design constraints, such as programming paradigms, architectural styles, component-based software engineering standards, design principles, and law-governed regularities. Detailed design, also described as tactical design, is an activity concerned with local design constraints, such as design patterns, architectural patterns, programming idioms, and refactorings. According to the Intension/Locality Hypothesis, the distinction between strategic and tactical design is defined by the Locality Criterion, according to which a statement about software design is non-local if and only if a program that satisfies it can be expanded into a program which does not. For example, the Client-Server style is architectural (strategic) because a program that's built by this principle can be expanded into a program which isn't client server; for example, by adding peer-to-peer nodes.
Examples of Architectural Styles / Patterns
There are many common ways of designing computer software modules and their communications, among them:
Blackboard
Client-server
Database-centric architecture
Distributed computing
Event Driven Architecture
Implicit invocation
Monolithic application
Peer-to-peer
Pipes and filters
Plugin
Representational State Transfer
Structured (module-based but usually monolithic within modules)
Software componentry (strictly module-based, usually object-oriented programming within modules, slightly less monolithic)
Service-oriented architecture
Search-oriented architecture
Space based architecture
Shared nothing architecture
Three-tier modelFurther Information
Get more info on 'Software Architecture'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://software_architecture.totallyexplained.com">Software architecture Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |